數位簽章就是公鑰演算法的延伸,而作為最知名和使用最廣泛的RSA公鑰演算法,自然不會少
同樣運用RSA中的超大數質因數分解來保證其安全性
RSA數位簽章需要搭配雜湊函式去一起使用,能用很多不同的雜湊函式如:sha 1、sha 2、md5等等,
只要簽章和驗章雙方講好使用同一個雜湊函式就好
大概流程入如下:
1.將需要簽章的文本經過雜湊函式獲得其雜湊值
2.對該雜湊值用RSA的私鑰(簽章人)去做加密運算,加密方法和RSA一樣
3.將需要簽章的文本(原文)和加密後的值合併後送出
只有3步就是如此簡單
簽完章就是要驗章,才能知道是不是同一個人簽的章
而驗章流程入下:
1.將簽章的檔案分成原文和加密後的章
2.將原文經過和簽章一樣的雜湊函式獲得其雜湊值
3.將加密簽章用簽章人的公鑰和n去做解密,成未加密的雜湊值(簽章時對雜湊值做加密)
4.比較兩個雜湊值是否相同,相同則簽章有效,不同則簽章無效
和RSA一樣,只要p,q夠大(2048 bits以上)都無破解紀錄
但要注意是
1.對雜湊值做加密而非原文
2.建議將原文做填充到和模數n一樣的order
3.簽章後的傳輸檔案一樣要做加密
4.重複的金鑰組簽章太多次後被破解的可能性會提高
5.雜湊函式要避免有碰撞
不同的原文如果簽出一樣的簽章會有風險